From 0acb6a0e9836d0d7d565b3eb3461809a3d0615d6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 11 Jun 2016 00:46:12 -0400 Subject: [PATCH] portal: Send file filters to the portal https://bugzilla.gnome.org/show_bug.cgi?id=768499 --- gtk/gtkfilechoosernativeportal.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gtk/gtkfilechoosernativeportal.c b/gtk/gtkfilechoosernativeportal.c index a43ca60ddb..d0bd149e13 100644 --- a/gtk/gtkfilechoosernativeportal.c +++ b/gtk/gtkfilechoosernativeportal.c @@ -243,6 +243,24 @@ open_file_msg_cb (GObject *source_object, g_object_unref (reply); } +static GVariant * +get_filters (GtkFileChooser *self) +{ + GSList *list, *l; + GVariantBuilder builder; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sa(us))")); + list = gtk_file_chooser_list_filters (self); + for (l = list; l; l = l->next) + { + GtkFileFilter *filter = l->data; + g_variant_builder_add (&builder, "@(sa(us))", gtk_file_filter_to_gvariant (filter)); + } + g_slist_free (list); + + return g_variant_builder_end (&builder); +} + gboolean gtk_file_chooser_native_portal_show (GtkFileChooserNative *self) { @@ -338,6 +356,7 @@ gtk_file_chooser_native_portal_show (GtkFileChooserNative *self) g_variant_new_string (self->cancel_label)); g_variant_builder_add (&opt_builder, "{sv}", "modal", g_variant_new_boolean (data->modal)); + g_variant_builder_add (&opt_builder, "{sv}", "filters", get_filters (GTK_FILE_CHOOSER (self))); g_dbus_message_set_body (message, g_variant_new ("(ss@a{sv})", -- 2.30.2